"""
@Time : 2023/12/20 20:43
@Auth : Mr.Zhao
"""
import random
import time

#关联算法和装饰器
#关联目的--减少代码出现量，提高可读性，减小耦合性
# 	保存--关联字典
# 		relation_dict
# 	使用约定--关联算法
# 		减小代码出现量，约定某个输入值会被对应需求值替换
# 		逆向思维，将字典的键去替换输入文本

#关联算法-二层装饰器
def relation(func):
    def wrapper(*args, **kwargs):
        #执行函数前进行替换
        args = list(args)
        self = args[0]  # 一定是当前对象self
        # 从1开始遍历，因为第一个参数是一定是self，不替换，只替换后面参数里的关键字

        #随机数
        int_r = random.randint(1, 9999999)
        str_r = '%07d' % int_r #格式（9位，不足左补零）
        # print(str_r)
        self.relations_dict['random'] = str_r

        #时间戳
        t_str = str(int(time.time() * 1000))
        # print(t_str)
        self.relations_dict['time'] = t_str

        for i in range(1,len(args)):
            for key in self.relations_dict.keys():
                args[i] = str(args[i].replace('{' + key + '}', str(self.relations_dict.get(key))))
        ret = func(*args, **kwargs)
        return ret
    return wrapper